
<!doctype html>
<html lang="en" class="no-js">
  <head>
    
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width,initial-scale=1">
      
      
      
      
        <link rel="prev" href="../Network19-24/">
      
      
        <link rel="next" href="../Network31-36/">
      
      <link rel="icon" href="../../../assets/favicon.png">
      <meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.1.6">
    
    
      
        <title>Chapter 25-30 - OpenCloudOS Documentation</title>
      
    
    
      <link rel="stylesheet" href="../../../assets/stylesheets/main.ded33207.min.css">
      
        
        <link rel="stylesheet" href="../../../assets/stylesheets/palette.a0c5b2b5.min.css">
      
      

    
    
    
      
        
        
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
      
    
    
    <script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
    
      

    
    
    
  </head>
  
  
    
    
      
    
    
    
    
    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
  
    
    
      <script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
    
    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
    <label class="md-overlay" for="__drawer"></label>
    <div data-md-component="skip">
      
        
        <a href="#25-dummy" class="md-skip">
          Skip to content
        </a>
      
    </div>
    <div data-md-component="announce">
      
    </div>
    
    
      

<header class="md-header" data-md-component="header">
  <nav class="md-header__inner md-grid" aria-label="Header">
    <a href="../../" title="OpenCloudOS Documentation" class="md-header__button md-logo" aria-label="OpenCloudOS Documentation" data-md-component="logo">
      
  <img src="../../../assets/logo.svg" alt="logo">

    </a>
    <label class="md-header__button md-icon" for="__drawer">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
    </label>
    <div class="md-header__title" data-md-component="header-title">
      <div class="md-header__ellipsis">
        <div class="md-header__topic">
          <span class="md-ellipsis">
            OpenCloudOS Documentation
          </span>
        </div>
        <div class="md-header__topic" data-md-component="header-topic">
          <span class="md-ellipsis">
            
              Chapter 25-30
            
          </span>
        </div>
      </div>
    </div>
    
      <form class="md-header__option" data-md-component="palette">
        
          
          <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo"  aria-label="Switch to dark mode"  type="radio" name="__palette" id="__palette_1">
          
            <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg>
            </label>
          
        
          
          <input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo"  aria-label="Switch to light mode"  type="radio" name="__palette" id="__palette_2">
          
            <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg>
            </label>
          
        
      </form>
    
    
      <div class="md-header__option">
        <div class="md-select">
          
          <button class="md-header__button md-icon" aria-label="Select language">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"/></svg>
          </button>
          <div class="md-select__inner">
            <ul class="md-select__list">
              
                <li class="md-select__item">
                  <a href="../../../network/Network25-30/" hreflang="zh" class="md-select__link">
                    中文
                  </a>
                </li>
              
                <li class="md-select__item">
                  <a href="./" hreflang="en" class="md-select__link">
                    English
                  </a>
                </li>
              
            </ul>
          </div>
        </div>
      </div>
    
    
      <label class="md-header__button md-icon" for="__search">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
      </label>
      <div class="md-search" data-md-component="search" role="dialog">
  <label class="md-search__overlay" for="__search"></label>
  <div class="md-search__inner" role="search">
    <form class="md-search__form" name="search">
      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
      <label class="md-search__icon md-icon" for="__search">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
      </label>
      <nav class="md-search__options" aria-label="Search">
        
          <a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7 0-.24-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91 1.61 0 2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08Z"/></svg>
          </a>
        
        <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
        </button>
      </nav>
      
        <div class="md-search__suggest" data-md-component="search-suggest"></div>
      
    </form>
    <div class="md-search__output">
      <div class="md-search__scrollwrap" data-md-scrollfix>
        <div class="md-search-result" data-md-component="search-result">
          <div class="md-search-result__meta">
            Initializing search
          </div>
          <ol class="md-search-result__list" role="presentation"></ol>
        </div>
      </div>
    </div>
  </div>
</div>
    
    
      <div class="md-header__source">
        <a href="https://github.com/OpenCloudOS/opencloudos.github.io" title="Go to repository" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
  </div>
  <div class="md-source__repository">
    OpenCloudOS/opencloudos.github.io
  </div>
</a>
      </div>
    
  </nav>
  
</header>
    
    <div class="md-container" data-md-component="container">
      
      
        
          
            
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
  <div class="md-grid">
    <ul class="md-tabs__list">
      
        
  
  


  <li class="md-tabs__item">
    <a href="../../" class="md-tabs__link">
      Home
    </a>
  </li>

      
        
  
  


  
  
  
    <li class="md-tabs__item">
      <a href="../../quickstart/V9_install/" class="md-tabs__link">
        Quick Start
      </a>
    </li>
  

      
        
  
  
    
  


  
  
  
    <li class="md-tabs__item">
      <a href="../../guide/config/" class="md-tabs__link md-tabs__link--active">
        Guide
      </a>
    </li>
  

      
        
  
  


  
  
  
    <li class="md-tabs__item">
      <a href="../../release/v8.5/" class="md-tabs__link">
        Releases
      </a>
    </li>
  

      
        
  
  


  <li class="md-tabs__item">
    <a href="../../faq/" class="md-tabs__link">
      FAQ
    </a>
  </li>

      
        
  
  


  
  
  
    <li class="md-tabs__item">
      <a href="../../contribution/how-to/" class="md-tabs__link">
        Contributing
      </a>
    </li>
  

      
        
  
  


  
  
  
    <li class="md-tabs__item">
      <a href="../../adaptation/adaptation_process/" class="md-tabs__link">
        Adaptation
      </a>
    </li>
  

      
        
  
  


  
  
  
    <li class="md-tabs__item">
      <a href="../../guide/migrate_relative/" class="md-tabs__link">
        About CentOS End-of-Life
      </a>
    </li>
  

      
    </ul>
  </div>
</nav>
          
        
      
      <main class="md-main" data-md-component="main">
        <div class="md-main__inner md-grid">
          
            
              
              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    

  


<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
  <label class="md-nav__title" for="__drawer">
    <a href="../../" title="OpenCloudOS Documentation" class="md-nav__button md-logo" aria-label="OpenCloudOS Documentation" data-md-component="logo">
      
  <img src="../../../assets/logo.svg" alt="logo">

    </a>
    OpenCloudOS Documentation
  </label>
  
    <div class="md-nav__source">
      <a href="https://github.com/OpenCloudOS/opencloudos.github.io" title="Go to repository" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
  </div>
  <div class="md-source__repository">
    OpenCloudOS/opencloudos.github.io
  </div>
</a>
    </div>
  
  <ul class="md-nav__list" data-md-scrollfix>
    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="../../" class="md-nav__link">
        Home
      </a>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
      
      
        
          
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
          Quick Start
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_2">
          <span class="md-nav__icon md-icon"></span>
          Quick Start
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../quickstart/V9_install/" class="md-nav__link">
        OC V9 下载及安装
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../quickstart/V8_install/" class="md-nav__link">
        OC V8 下载及安装
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../quickstart/use/" class="md-nav__link">
        How to Use
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
    
  
  
    
    <li class="md-nav__item md-nav__item--active md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
      
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
          Guide
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
        <label class="md-nav__title" for="__nav_3">
          <span class="md-nav__icon md-icon"></span>
          Guide
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../guide/config/" class="md-nav__link">
        Configuation
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../guide/sysadmin/" class="md-nav__link">
        System Admin
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../guide/update/" class="md-nav__link">
        Update
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../guide/monitor/" class="md-nav__link">
        System Monitor
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../guide/security/" class="md-nav__link">
        Security
      </a>
    </li>
  

            
          
            
              
  
  
  
    
      
    
    <li class="md-nav__item md-nav__item--section md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6" >
      
      
        
          
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_3_6" id="__nav_3_6_label" tabindex="0">
          Storage
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_3_6">
          <span class="md-nav__icon md-icon"></span>
          Storage
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../storage/file_system/" class="md-nav__link">
        File System
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../storage/configuring_and_managing_logical_volumes/" class="md-nav__link">
        Logical Volumes
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../storage/managing_storage_devices/" class="md-nav__link">
        Storage Devices
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

            
          
            
              
  
  
    
  
  
    
      
    
    <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7" checked>
      
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_3_7" id="__nav_3_7_label" tabindex="0">
          Network
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_7_label" aria-expanded="true">
        <label class="md-nav__title" for="__nav_3_7">
          <span class="md-nav__icon md-icon"></span>
          Network
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network1-6/" class="md-nav__link">
        Chapter 1-6
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network7-12/" class="md-nav__link">
        Chapter 7-12
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network13-18/" class="md-nav__link">
        Chapter 13-18
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network19-24/" class="md-nav__link">
        Chapter 19-24
      </a>
    </li>
  

            
          
            
              
  
  
    
  
  
    <li class="md-nav__item md-nav__item--active">
      
      <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
      
      
        
      
      
        <label class="md-nav__link md-nav__link--active" for="__toc">
          Chapter 25-30
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <a href="./" class="md-nav__link md-nav__link--active">
        Chapter 25-30
      </a>
      
        

<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  
  
  
    
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      Table of contents
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#251-nmcli-ipv4-ipv6-dummy" class="md-nav__link">
    25.1.使用 nmcli 使用 IPv4 和 IPv6 地址创建 dummy 接口
  </a>
  
</li>
      
    </ul>
  
</nav>
      
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network31-36/" class="md-nav__link">
        Chapter 31-36
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network37-42/" class="md-nav__link">
        Chapter 37-42
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network43-48/" class="md-nav__link">
        Chapter 43-48
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network49-54/" class="md-nav__link">
        Chapter 49-54
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../Network55-57/" class="md-nav__link">
        Chapter 55-57
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
      
      
        
          
        
          
        
          
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
          Releases
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_4">
          <span class="md-nav__icon md-icon"></span>
          Releases
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../release/v8.5/" class="md-nav__link">
        v8.5
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../release/v8.6/" class="md-nav__link">
        v8.6
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../release/v9.0/" class="md-nav__link">
        v9.0
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../release/ocs/" class="md-nav__link">
        OpenCloudOS Stream
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../release/ocsk/" class="md-nav__link">
        OpenCloudOS Stream Kernel
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    <li class="md-nav__item">
      <a href="../../faq/" class="md-nav__link">
        FAQ
      </a>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
      
      
        
          
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
          Contributing
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_6">
          <span class="md-nav__icon md-icon"></span>
          Contributing
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../contribution/how-to/" class="md-nav__link">
        How to contribute
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../contribution/docs-format-guide/" class="md-nav__link">
        Documentation format guide
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../contribution/kernel-develop-guide/" class="md-nav__link">
        内核开发指南
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
      
      
        
          
        
          
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
          Adaptation
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_7">
          <span class="md-nav__icon md-icon"></span>
          Adaptation
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../adaptation/adaptation_process/" class="md-nav__link">
        Adaptation Process
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../adaptation/testcase/" class="md-nav__link">
        Test Case
      </a>
    </li>
  

            
          
            
              
  
  
  
    
      
    
    <li class="md-nav__item md-nav__item--section md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_3" >
      
      
        
          
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_7_3" id="__nav_7_3_label" tabindex="0">
          Adaptation Lists
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_3_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_7_3">
          <span class="md-nav__icon md-icon"></span>
          Adaptation Lists
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../adaptation/adaptation_hw/" class="md-nav__link">
        Hardware Adaptation
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../adaptation/adaptation_sw/" class="md-nav__link">
        Commercial Software Adaptation
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../adaptation/adaptation_oss/" class="md-nav__link">
        OpenSouce Software Adaptation
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../adaptation/adaptation_FAQ/" class="md-nav__link">
        Adaptation FAQ
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
      
      
      

  
  
  
    
    <li class="md-nav__item md-nav__item--nested">
      
      
      
      
      <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
      
      
        
          
        
          
        
      
      
        <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
          About CentOS End-of-Life
          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
        <label class="md-nav__title" for="__nav_8">
          <span class="md-nav__icon md-icon"></span>
          About CentOS End-of-Life
        </label>
        <ul class="md-nav__list" data-md-scrollfix>
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../guide/migrate_relative/" class="md-nav__link">
        About CentOS End-of-Life
      </a>
    </li>
  

            
          
            
              
  
  
  
    <li class="md-nav__item">
      <a href="../../guide/migrate/" class="md-nav__link">
        Migrate from CentOS
      </a>
    </li>
  

            
          
        </ul>
      </nav>
    </li>
  

    
  </ul>
</nav>
                  </div>
                </div>
              </div>
            
            
              
              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    

<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  
  
  
    
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      Table of contents
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#251-nmcli-ipv4-ipv6-dummy" class="md-nav__link">
    25.1.使用 nmcli 使用 IPv4 和 IPv6 地址创建 dummy 接口
  </a>
  
</li>
      
    </ul>
  
</nav>
                  </div>
                </div>
              </div>
            
          
          
            <div class="md-content" data-md-component="content">
              <article class="md-content__inner md-typeset">
                
                  

  
  


<h1 id="25-dummy">第25章 创建 dummy 接口</h1>
<p>作为 OpenCloudOS 用户，您可以创建并使用 dummy 网络接口进行调试和测试。dummy 接口提供了一个设备来路由数据包而无需实际传送数据包。它可让您额外创建使用 NetworkManager 管理的回环设备，使不活跃的 SLIP（Serial Line Internet Protocol）地址像具体地址一样与进程通信。</p>
<h2 id="251-nmcli-ipv4-ipv6-dummy">25.1.使用 nmcli 使用 IPv4 和 IPv6 地址创建 dummy 接口</h2>
<p>您可以创建带有各种设置的 dummy 接口。本节描述了如何使用 IPv4 和 IPv6 地址创建 dummy 接口。创建虚拟接口后，NetworkManager 会自动将其分配给默认的 public 防火墙域。</p>
<p>注意，要配置没有 IPv4 或 IPv6 地址的虚拟接口，请将 ipv4.method 和 ipv6.method 参数设为 disabled。否则，IP 自动配置会失败，NetworkManager 会取消激活连接并删除 dummy 设备。</p>
<p><strong>流程</strong></p>
<ol>
<li>创建一个名为 dummy0 的、带有静态 IPv4 和 IPv6 地址的 dummy 接口：
    <div class="highlight"><pre><span></span><code># nmcli connection add type dummy ifname dummy0 ipv4.method manual ipv4.addresses 192.0.2.1/24 ipv6.method manual ipv6.addresses 2001:db8:2::1/64
</code></pre></div></li>
<li>可选： 要查看 dummy 接口，请输入：
    <div class="highlight"><pre><span></span><code># nmcli connection show
NAME            UUID                                  TYPE      DEVICE
enp1s0          db1060e9-c164-476f-b2b5-caec62dc1b05  ethernet    ens3
dummy-dummy0    
</code></pre></div></li>
</ol>
<h1 id="26-nmstate-autoconf-lldp">第26章 使用 nmstate-autoconf 自动配置使用 LLDP 的网络状态</h1>
<p>网络设备可以使用链路层发现协议(LLDP)在 LAN 中表明自己的身份、功能和邻居。nmstate-autoconf 工具可使用此信息来自动配置本地网络接口。</p>
<h2 id="261-nmstate-autoconf">26.1.使用 nmstate-autoconf 来自动配置网络接口</h2>
<p>nmstate-autoconf 工具使用 LLDP 来识别连接到交换机接口的 VLAN 设置来配置本地设备。</p>
<p>此流程假设以下场景，以及交换机使用 LLDP 广播 VLAN 设置：</p>
<ul>
<li>服务器的 enp1s0 和 enp2s0 接口连接到使用 VLAN ID 100 和 VLAN 名称 prod-net 配置的交换机端口。</li>
<li>服务器的 enp3s0 接口连接到使用 VLAN ID 200 和 VLAN 名称 mgmt-net 配置的交换机端口。</li>
</ul>
<p>然后，nmstate-autoconf 工具使用此信息来在服务器上创建以下接口：</p>
<ul>
<li>bond100 - enp1s0 和 enp2s0 作为端口的绑定接口。</li>
<li>prod-net - 在 VLAN ID 为 100 的 bond100 上面的 VLAN 接口。</li>
<li>mgmt-net - 在 VLAN ID 为200 的 enp3s0 上面的 VLAN 接口</li>
</ul>
<p>如果您将多个网络接口连接到 LLDP 用来广播同一 VLAN ID 的不同交换机的端口，则 nmstate-autoconf 会用这些接口来创建一个绑定，并在其上配置通用 VLAN ID。</p>
<p><strong>前提条件</strong></p>
<ul>
<li>nmstate 软件包已安装。</li>
<li>网络交换机上启用了 LLDP。</li>
<li>以太网接口已启用。</li>
</ul>
<p><strong>流程</strong></p>
<ol>
<li>在以太网接口上启用 LLDP：</li>
<li>创建 ~/enable-lldp.yml YAML 文件，包含以下内容：
        <div class="highlight"><pre><span></span><code>interfaces:
- name: enp1s0
    type: ethernet
    lldp:
    enabled: true
- name: enp2s0
    type: ethernet
    lldp:
    enabled: true
- name: enp3s0
    type: ethernet
    lldp:
    enabled: true
</code></pre></div></li>
<li>
<p>应用设置：
        <div class="highlight"><pre><span></span><code># nmstatectl apply ~/enable-lldp.yml
</code></pre></div></p>
</li>
<li>
<p>使用 LLDP 配置网络接口：</p>
</li>
<li>可选，启动一个空运行来显示并验证 nmstate-autoconf 生成的 YAML 配置：
        <div class="highlight"><pre><span></span><code># nmstate-autoconf -d enp1s0,enp2s0,enp3s0
---
interfaces:
- name: prod-net
type: vlan
state: up
vlan:
    base-iface: bond100
    id: 100
- name: mgmt-net
type: vlan
state: up
vlan:
    base-iface: enp3s0
    id: 200
- name: bond100
type: bond
state: up
link-aggregation:
    mode: balance-rr
    port:
    - enp1s0
    - enp2s0
</code></pre></div></li>
<li>使用 nmstate-autoconf 根据从 LLDP 接收的信息来生成配置，并将设置应用到系统：
        <div class="highlight"><pre><span></span><code># nmstate-autoconf enp1s0,enp2s0,enp3s0
</code></pre></div></li>
</ol>
<p><strong>验证</strong></p>
<ul>
<li>显示单个接口的设置
    <div class="highlight"><pre><span></span><code># nmstatectl show &lt;interface_name&gt;
</code></pre></div></li>
</ul>
<h1 id="27-lldp">第27章 使用 LLDP 来调试网络配置问题</h1>
<p>您可以使用链路层发现协议(LLDP)来调试网络拓扑中的配置问题。这意味着 LLDP 可以报告与其他主机或路由器以及交换机的配置不一致问题。</p>
<h2 id="271-lldp-vlan">27.1.使用 LLDP 信息调试不正确的 VLAN 配置</h2>
<p>如果您将交换机端口配置为使用指定的 VLAN ，而主机没有收到这些 VLAN 数据包，那么您可以使用链路层发现协议(LLDP)来调试问题。请在没有收到数据包的主机上执行这个流程。</p>
<p><strong>前提条件</strong></p>
<ul>
<li>nmstate 软件包已安装。</li>
<li>交换机支持 LLDP。</li>
<li>LLDP 在邻居设备上已启用。</li>
</ul>
<p><strong>流程</strong></p>
<ol>
<li>使用以下内容创建 ~/enable-LLDP-enp1s0.yml 文件：
    <div class="highlight"><pre><span></span><code>interfaces:
- name: enp1s0
    type: ethernet
    lldp:
    enabled: true
</code></pre></div></li>
<li>使用以下内容创建 ~/enable-LLDP-enp1s0.yml 文件：
    <div class="highlight"><pre><span></span><code># nmstatectl apply ~/enable-LLDP-enp1s0.yml
</code></pre></div></li>
<li>显示 LLDP 信息：
    <div class="highlight"><pre><span></span><code># nmstatectl show enp1s0
- name: enp1s0
type: ethernet
state: up
ipv4:
    enabled: false
    dhcp: false
ipv6:
    enabled: false
    autoconf: false
    dhcp: false
lldp:
    enabled: true
    neighbors:
    - - type: 5
        system-name: Summit300-48
    - type: 6
        system-description: Summit300-48 - Version 7.4e.1 (Build 5)
        05/27/05 04:53:11
    - type: 7
        system-capabilities:
        - MAC Bridge component
        - Router
    - type: 1
        _description: MAC address
        chassis-id: 00:01:30:F9:AD:A0
        chassis-id-type: 4
    - type: 2
        _description: Interface name
        port-id: 1/1
        port-id-type: 5
    - type: 127
        ieee-802-1-vlans:
        - name: v2-0488-03-0505
        vid: 488
        oui: 00:80:c2
        subtype: 3
    - type: 127
        ieee-802-3-mac-phy-conf:
        autoneg: true
        operational-mau-type: 16
        pmd-autoneg-cap: 27648
        oui: 00:12:0f
        subtype: 1
    - type: 127
        ieee-802-1-ppvids:
        - 0
        oui: 00:80:c2
        subtype: 2
    - type: 8
        management-addresses:
        - address: 00:01:30:F9:AD:A0
        address-subtype: MAC
        interface-number: 1001
        interface-number-subtype: 2
    - type: 127
        ieee-802-3-max-frame-size: 1522
        oui: 00:12:0f
        subtype: 4
mac-address: 82:75:BE:6F:8C:7A
mtu: 1500
</code></pre></div></li>
<li>验证输出，以确保设置与您预期的配置匹配。例如，连接到交换机的接口的 LLDP 信息显示此主机连接的交换机端口使用 VLAN ID 448:
    <div class="highlight"><pre><span></span><code>- type: 127
        ieee-802-1-vlans:
        - name: v2-0488-03-0505
        vid: 488
</code></pre></div>
    如果 enp1s0 接口的网络配置使用不同的 VLAN ID，请相应地进行修改。</li>
</ol>
<h1 id="28-keyfile-networkmanager">第28章 以 keyfile 格式手动创建 NetworkManager 配置集</h1>
<p>NetworkManager 支持以 keyfile 格式存储的配置集。但是，默认情况下，如果您使用 NetworkManager 工具（如 nmcli、networking rhel-system-roles或 nmstate API）来管理配置文件，NetworkManager 仍然会使用 ifcfg 格式的配置文件。</p>
<h2 id="281-keyfile-networkmanager">28.1. keyfile 格式的 NetworkManager 配置集</h2>
<p>当在磁盘上存储连接配置集时， NetworkManager 将使用 INI 样式的 keyfile 格式。</p>
<p><strong>keyfile 格式的以太网连接配置集示例</strong></p>
<div class="highlight"><pre><span></span><code>[connection]
id=example_connection
uuid=82c6272d-1ff7-4d56-9c7c-0eb27c300029
type=ethernet
autoconnect=true

[ipv4]
method=auto

[ipv6]
method=auto

[ethernet]
mac-address=00:53:00:8f:fa:66
</code></pre></div>
<p>每个部分都对应一个 NetworkManager 设置名称，NetworkManager keyfile 文件中的大多数变量都有一个一对一的映射。这意味着 NetworkManager 的属性作为相同名称的变量和相同格式存储在 keyfile 中。然而，有一些例外情况，主要是为了使 keyfile 语法更易于阅读。</p>
<p>出于安全考虑，由于连接配置文件可以包含敏感信息，如私钥和密语，NetworkManager 仅使用由 root 拥有的配置文件，并且仅可由 root 读和写。</p>
<p>根据连接配置文件的目的，将其保存在以下目录中：</p>
<ul>
<li>/etc/NetworkManager/system-connections/ ：用户创建的持久配置文件的通用位置，也可以对其进行编辑。NetworkManager 将它们自动复制到 /etc/NetworkManager/system-connections/。</li>
<li>/run/NetworkManager/system-connections/ ：用于在重启系统时自动删除的临时配置文件。</li>
<li>/usr/lib/NetworkManager/system-connections/ ：用于预先部署的不可变的配置文件。当您使用 NetworkManager API 编辑此类配置文件时，NetworkManager 会将此配置文件复制到持久性存储或临时存储中。</li>
</ul>
<p>NetworkManager 不会自动从磁盘重新加载配置文件。当您以 keyfile 格式创建或更新连接配置集时，请使用 nmcli connection reload 命令告知 NetworkManager 更改。</p>
<h2 id="282-keyfile-networkmanager">28.2.以 keyfile 格式创建 NetworkManager 配置集</h2>
<p>本节介绍如何以 keyfile 格式手动创建 NetworkManager 连接配置集。</p>
<p>注意，手动创建或更新配置文件可能会导致意外或无法正常工作的网络配置。OpenCloudOS 建议您使用 NetworkManager 工具，如 nmcli、网络 RHEL 系统角色或 nmstate API 来管理 NetworkManager 连接。</p>
<p><strong>流程</strong></p>
<ol>
<li>
<p>如果您为硬件接口（如以太网卡）创建了一个配置文件，请显示此接口的 MAC 地址：
    <div class="highlight"><pre><span></span><code># ip address show enp1s0
2: enp1s0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:53:00:8f:fa:66 brd ff:ff:ff:ff:ff:ff
</code></pre></div></p>
</li>
<li>
<p>创建连接配置文件。例如，对于使用 DHCP 的以太网设备的连接配置文件，请使用以下内容创建 /etc/NetworkManager/system-connections/example.nmconnection 文件：
    <div class="highlight"><pre><span></span><code>[connection]
id=example_connection
type=ethernet
autoconnect=true

[ipv4]
method=auto

[ipv6]
method=auto

[ethernet]
mac-address=00:53:00:8f:fa:66
</code></pre></div></p>
</li>
</ol>
<p>您可以使用任何以 .nmconnection 为后缀的文件名。但是，当您稍后使用 nmcli 命令来管理连接时，您必须在引用此连接 id 变量中设置的连接名称。当省略 id 变量时，请使用不带 .nmconnection 的文件名来引用此连接。</p>
<ol>
<li>
<p>对配置文件设置权限，以便只有 root 用户可以读和更新它：
    <div class="highlight"><pre><span></span><code># chown root:root /etc/NetworkManager/system-connections/example.nmconnection
# chmod 600 /etc/NetworkManager/system-connections/example.nmconnection
</code></pre></div></p>
</li>
<li>
<p>重新加载连接配置文件：
    <div class="highlight"><pre><span></span><code># nmcli connection reload
</code></pre></div></p>
</li>
<li>
<p>验证 NetworkManager 是否从配置文件读取配置文件：
    <div class="highlight"><pre><span></span><code># nmcli -f NAME,UUID,FILENAME connection
NAME                UUID                                  FILENAME
example-connection  86da2486-068d-4d05-9ac7-957ec118afba  /etc/NetworkManager/system-connections/example.nmconnection
...
</code></pre></div>
    如果命令未显示新添加的连接，请验证文件权限和您在文件中使用的语法是否正确。</p>
</li>
<li>
<p>可选：如果您将配置文件中的 autoconnect 变量设为 false，请激活连接：
    <div class="highlight"><pre><span></span><code># nmcli connection up example_connection
</code></pre></div></p>
</li>
</ol>
<p><strong>验证</strong></p>
<ol>
<li>
<p>显示连接配置文件：
    <div class="highlight"><pre><span></span><code># nmcli connection show example_connection
</code></pre></div></p>
</li>
<li>
<p>显示接口的 IP 设置：
    <div class="highlight"><pre><span></span><code># ip address show enp1s0
</code></pre></div></p>
</li>
</ol>
<h2 id="283-networkmanager-ifcfg-keyfile">28.3.将 NetworkManager 配置集从 ifcfg 迁移到 keyfile 格式</h2>
<p>您可以使用 nmcli connection migrate 命令将现有 ifcfg 连接配置集迁移到 keyfile 格式。这样，所有连接配置集都将位于一个位置和首选格式。</p>
<p><strong>前提条件</strong></p>
<ul>
<li>在 /etc/sysconfig/network-scripts/ 目录中有 ifcfg 格式的连接配置集。</li>
</ul>
<p><strong>流程</strong></p>
<ul>
<li>迁移连接配置集
    <div class="highlight"><pre><span></span><code># nmcli connection migrate
Connection &#39;enp1s0&#39; (43ed18ab-f0c4-4934-af3d-2b3333948e45) successfully migrated.
Connection &#39;enp2s0&#39; (883333e8-1b87-4947-8ceb-1f8812a80a9b) successfully migrated.
...
</code></pre></div></li>
</ul>
<p><strong>验证</strong></p>
<ul>
<li>验证是否成功迁移了连接配置集
    <div class="highlight"><pre><span></span><code># nmcli -f TYPE,FILENAME,NAME connection
TYPE      FILENAME                                                           NAME
ethernet  /etc/NetworkManager/system-connections/enp1s0.nmconnection         enp1s0
ethernet  /etc/NetworkManager/system-connections/enp2s0.nmconnection         enp2s0
...
</code></pre></div></li>
</ul>
<h2 id="284-nmcli">28.4.使用 nmcli 以离线模式创建密钥文件连接配置集</h2>
<p>您可以使用 nmcli --offline connection add 命令，以离线模式 keyfile 格式创建各种连接配置集。</p>
<p>离线模式可确保 nmcli 在没有 NetworkManager 服务的情况下运行，以通过标准输出生成密钥文件连接配置集。此功能在以下情况下很有用：</p>
<ul>
<li>您想要创建需要预部署位置的连接配置集。例如，在容器镜像中，或 RPM 软件包。</li>
<li>您需要在 NetworkManager 服务不可用的环境中创建连接配置集。例如，当您想要使用 chroot 工具时。或者，当您要通过 Kickstart %post 脚本创建或修改 OpenCloudOS 系统的网络配置时。</li>
</ul>
<p>您可以创建以下连接配置集类型：</p>
<ul>
<li>静态以太网连接</li>
<li>动态以太网连接</li>
<li>网络绑定</li>
<li>网桥</li>
<li>VLAN 或任何支持的连接类型</li>
</ul>
<p>注意，手动创建或更新配置文件可能会导致意外或无法正常工作的网络配置。</p>
<p><strong>前提条件</strong></p>
<ul>
<li>NetworkManager 服务已停止。</li>
</ul>
<p><strong>流程</strong></p>
<ol>
<li>
<p>以 keyfile 格式创建新连接配置集。例如，对于不使用 DHCP 的以太网设备的连接配置文件，请运行类似的 nmcli 命令：
    <div class="highlight"><pre><span></span><code># nmcli --offline connection add type ethernet con-name Example-Connection ipv4.addresses 192.0.2.1/24 ipv4.dns 192.0.2.200 ipv4.method manual &gt; /etc/NetworkManager/system-connections/output.nmconnection
</code></pre></div></p>
<p>使用 con-name 键指定的连接名称保存在生成的配置集的 id 变量中。当您稍后使用 nmcli 命令管理这个连接时，请按如下所示指定连接：
 - 如果没有省略 id 变量，请使用连接名称，如 Example-Connection。
 - 当省略 id 变量时，请使用不带 .nmconnection 后缀的文件名，如 输出。</p>
</li>
<li>
<p>对配置文件设置权限，以便只有 root 用户可以读和更新它：
    <div class="highlight"><pre><span></span><code># chmod 600 /etc/NetworkManager/system-connections/output.nmconnection
# chown root:root /etc/NetworkManager/system-connections/output.nmconnection
</code></pre></div></p>
</li>
<li>
<p>启动 NetworkManager 服务：
    <div class="highlight"><pre><span></span><code># systemctl start NetworkManager.service
</code></pre></div></p>
</li>
<li>
<p>可选：如果您将配置文件中的 autoconnect 变量设为 false，请激活连接：
    <div class="highlight"><pre><span></span><code># nmcli connection up Example-Connection
</code></pre></div></p>
</li>
</ol>
<p><strong>验证</strong></p>
<ol>
<li>验证 NetworkManager 服务是否正在运行：
    <div class="highlight"><pre><span></span><code># systemctl status NetworkManager.service
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-08-03 13:08:32 CEST; 1min 40s ago
    Docs: man:NetworkManager(8)
Main PID: 7138 (NetworkManager)
    Tasks: 3 (limit: 22901)
Memory: 4.4M
CGroup: /system.slice/NetworkManager.service
        └─7138 /usr/sbin/NetworkManager --no-daemon

Aug 03 13:08:33 example.com NetworkManager[7138]: &lt;info&gt;  [1659524913.3600] device (vlan20): state change: secondaries -&gt; activated (reason &#39;none&#39;, sys-iface-state: &#39;assume&#39;)
Aug 03 13:08:33 example.com NetworkManager[7138]: &lt;info&gt;  [1659524913.3607] device (vlan20): Activation: successful, device activated.
...
</code></pre></div></li>
<li>验证 NetworkManager 是否可以从配置文件中读取配置集：
    <div class="highlight"><pre><span></span><code># nmcli -f TYPE,FILENAME,NAME connection
TYPE      FILENAME                                                    NAME
ethernet /etc/NetworkManager/system-connections/output.nmconnection Example-Connection
ethernet  /etc/sysconfig/network-scripts/ifcfg-enp1s0                 enp1s0
...
</code></pre></div>
    如果输出没有显示新创建的连接，请验证 keyfile 权限和您所用的语法是否正确。</li>
<li>显示连接配置文件：
    <div class="highlight"><pre><span></span><code># nmcli connection show Example-Connection
connection.id:                          Example-Connection
connection.uuid:                        232290ce-5225-422a-9228-cb83b22056b4
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              --
connection.autoconnect:                 yes
...
</code></pre></div></li>
</ol>
<h1 id="29-netconsole">第29章 使用 netconsole 通过网络记录内核信息</h1>
<p>使用 netconsole 内核模块和同名的服务，当磁盘失败或不可能使用串行控制台时，您可以在日志通过网络记录内核消息，方便调试。</p>
<h2 id="291-netconsole">29.1.配置 netconsole 服务为将内核信息记录到远程主机</h2>
<p>使用 netconsole 内核模块，您可以将内核信息记录到远程系统日志服务。</p>
<p><strong>前提条件</strong></p>
<ul>
<li>远程主机上已安装系统日志服务，如 rsyslog 。</li>
<li>远程系统日志服务被配置为接收来自此主机的日志条目。</li>
</ul>
<p><strong>流程</strong></p>
<ol>
<li>安装 netconsole-service 软件包：
    <div class="highlight"><pre><span></span><code># yum install netconsole-service
</code></pre></div></li>
<li>编辑 /etc/sysconfig/netconsole 文件，并将 SYSLOGADDR 参数设为远程主机的 IP 地址：
    <div class="highlight"><pre><span></span><code># SYSLOGADDR=192.0.2.1
</code></pre></div></li>
<li>启用并启动 netconsole 服务：
    <div class="highlight"><pre><span></span><code># SYSLOGADDR=192.0.2.1
</code></pre></div></li>
</ol>
<p><strong>验证</strong></p>
<ul>
<li>在远程系统日志服务器上显示 /var/log/messages 文件。</li>
</ul>
<h1 id="30-systemd">第30章 systemd 网络目标和服务</h1>
<p>NetworkManager 在系统引导过程中配置网络。但是，当使用远程 root(/)引导时，例如，如果 root 目录存储在 iSCSI 设备上，网络设置会在 RHEL 启动之前在初始 RAM 磁盘(initrd)中应用。例如，如果网络配置是在内核命令行上使用 rd.neednet=1 指定的，或者配置被指定为挂载远程文件系统，则网络设置将在 initrd 上应用。</p>
<p>本章描述了应用网络设置时使用的不同目标，如 network 、network-online、和 NetworkManager-wait-online 服务，以及如何配置 systemd 服务以使其在 network-online 服务启动后启动。</p>
<h2 id="301network-network-online-systemd-target">30.1.network 和 network-online systemd target 的不同</h2>
<p>systemd 维护 network 和 network-online 目标单元。特殊单元，如 NetworkManager-wait-online.service，具有 WantedBy=network-online.target 和 Before=network-online.target 参数。如果启用了，这些单元将启动 network-online.target ，它们会延迟 network-online 目标，直到网络连接了。</p>
<p>network-online 目标启动一个服务，这会对进一步执行增加更长的延迟。systemd 会自动使用这个目标单元的 Wants 和 After 参数来向所有 System V(SysV) init 脚本服务单元添加依赖项，这些服务单元具有一个指向 $network 工具的 Linux Standard Base(LSB)头。LSB 头是 init 脚本的元数据。您可以使用它指定依赖项。这与 systemd 目标类似。</p>
<p>network 目标不会显著延迟引导进程的执行。到达 network 目标意味着，负责设置网络的服务已启动。但并不意味着已经配置了一个网络设备。这个目标在关闭系统的过程中非常重要。例如，如果您在引导过程中有一个排在 network 目标之后的服务，则这个依赖关系在关闭过程中会反过来。在服务停止后，网络才会断开连接。远程网络文件系统的所有挂载单元都会自动启动 network-online 目标单元，并在其之后排序。</p>
<p>注意，network-online 目标单元只在系统启动过程中有用。系统完成引导后，这个目标不会跟踪网络的在线状态。因此，您无法使用 network-online 来监控网络连接。这个目标提供了一个一次性系统启动概念。</p>
<h2 id="302-networkmanager-wait-online">30.2. NetworkManager-wait-online 概述</h2>
<p>同步传统网络脚本会遍历所有配置文件来设置设备。它们应用所有与网络相关的配置并确保网络在线。</p>
<p>NetworkManager-wait-online 服务会等待要配置的网络的超时时间。这个网络配置涉及插入以太网设备、扫描 Wi-Fi 设备等。NetworkManager 会自动激活配置为自动启动的适当配置集。因 DHCP 超时或类似事件导致自动激活失败，网络管理器（NetworkManager）可能会在一定时间内处于忙碌状态。根据配置，NetworkManager 会重新尝试激活同一配置集或不同的配置集。</p>
<p>当启动完成后，所有配置集都处于断开连接的状态，或被成功激活。您可以配置配置集来自动连接。以下是一些参数示例，这些参数设定超时或者在连接被视为活跃时定义：</p>
<ul>
<li>connection.wait-device-timeout - 设置用来检测设备的驱动程序的超时时间</li>
<li>ipv4.may-fail 和 ipv6.may-fail - 使用一个 IP 地址系列设置激活，或者一个特定的地址系列是否必须已完成配置。</li>
<li>ipv4.gateway-ping-timeout - 延迟激活。</li>
</ul>
<h2 id="303-systemd">30.3.将 systemd 服务配置为在网络已启动后再启动</h2>
<p>OpenCloudOS 在 /usr/lib/systemd/system/ 目录中安装 systemd 服务文件。此流程为 /etc/systemd/system/service_name.service.d/ 中的服务文件创建一个置入段，该文件与 /usr/lib/systemd/system/ 中的服务文件一起使用，以便在网络在线后启动特定的 服务。如果置入段中的设置与 /usr/lib/systemd/system/ 中服务文件中的设置重叠，则它具有更高的优先级。</p>
<p><strong>流程</strong></p>
<ol>
<li>要在编辑器中打开服务文件，请输入：
    <div class="highlight"><pre><span></span><code># systemctl edit service_name
</code></pre></div></li>
<li>输入以下内容并保存更改：
    <div class="highlight"><pre><span></span><code>[Unit]
After=network-online.target
</code></pre></div></li>
<li>输入以下内容并保存更改：
    <div class="highlight"><pre><span></span><code># systemctl daemon-reload
</code></pre></div></li>
</ol>





                
              </article>
            </div>
          
          
        </div>
        
          <button type="button" class="md-top md-icon" data-md-component="top" hidden>
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
            Back to top
          </button>
        
      </main>
      
        <footer class="md-footer">
  
  <div class="md-footer-meta md-typeset">
    <div class="md-footer-meta__inner md-grid">
      <div class="md-copyright">
  
  
    Made with
    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
      Material for MkDocs
    </a>
  
</div>
      
    </div>
  </div>
</footer>
      
    </div>
    <div class="md-dialog" data-md-component="dialog">
      <div class="md-dialog__inner md-typeset"></div>
    </div>
    
    <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.annotate", "content.tooltips", "navigation.indexes", "navigation.sections", "navigation.tabs", "navigation.top", "navigation.tracking", "search.highlight", "search.share", "search.suggest", "toc.follow"], "search": "../../../assets/javascripts/workers/search.208ed371.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
    
    
      <script src="../../../assets/javascripts/bundle.51198bba.min.js"></script>
      
    
  </body>
</html>